package com.yuanshi.food.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import lombok.Data;

/**
 * 用户-优惠券关联表（存储用户领取的优惠券，手册“用户优惠可追溯”要求）
 * @TableName user_coupon
 */
@TableName(value ="user_coupon")
@Data
public class UserCoupon {
    /**
     * ID（主键）
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 业务标识（固定42位字符串）
     */
    @TableField(value = "biz_code")
    private String bizCode;

    /**
     * 用户ID（关联user.id）
     */
    @TableField(value = "user_id")
    private Long userId;

    /**
     * 优惠券ID（关联coupon.id）
     */
    @TableField(value = "coupon_id")
    private Long couponId;

    /**
     * 优惠券编号（冗余存储）
     */
    @TableField(value = "coupon_no")
    private String couponNo;

    /**
     * 领取时间（手册“领取时间可追溯”要求）
     */
    @TableField(value = "get_time")
    private Date getTime;

    /**
     * 使用时间（非空约束：仅已使用状态有值）
     */
    @TableField(value = "use_time")
    private Date useTime;

    /**
     * 使用的订单ID（关联order.id，追溯优惠券使用场景）
     */
    @TableField(value = "order_id")
    private Long orderId;

    /**
     * 状态：1-未使用，2-已使用，3-已过期（枚举化状态）
     */
    @TableField(value = "coupon_status")
    private Object couponStatus;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    private Date updateTime;
}